//
//  JLRoutes+BPGenerateURL.h
//  BPRoutes_Example
//
//  Created by 404 on 2020/9/4.
//  Copyright © 2020 xuhongji. All rights reserved.
//

#undef BPRoute
#define BPRoute(Schema, path) \
([NSString stringWithFormat: @"%@:/%@", \
Schema, \
path])

#undef BPRouteURL
#define BPRouteURL(Schema, path) \
([NSURL URLWithString: \
BPRoute(Schema, path)])

#import <JLRoutes/JLRoutes.h>

NS_ASSUME_NONNULL_BEGIN

@interface JLRoutes (BPGenerateURL)

/// 格式化 URL
/// @param pattern 路由格式
/// @param parameters 请求参数
+ (NSString *)BP_GenerateURLWithPattern:(NSString * _Nullable)pattern
                             parameters:(NSArray *)parameters;


/// 格式化 URL 带扩展参数
/// @param pattern 路由格式
/// @param parameters 请求参数
/// @param extraParameters 扩展参数
+ (NSString *)BP_GenerateURLWithPattern:(NSString *)pattern
                             parameters:(NSArray *)parameters
                        extraParameters:(NSDictionary * _Nullable)extraParameters;


/// 解析NSURL对象中的请求参数
/// @param URL 请求对象URL
/**
 * xxx://xxxx?param1=value1&param2=value2
 * 解析成 @{param1:value1, param2:value2}
 */
+ (NSDictionary *)BP_RouteParamsWithURL:(NSURL *)URL;


/// 将字典对象转化为表单形式
/// @param params 字典参数
/**
* 将@{param1:value1, param2:value2}
* 转换成 ?param1=value1&param2=value2
*/
+ (NSString *)BP_MapDictionaryToURLQueryString:(NSDictionary *)params;

@end

NS_ASSUME_NONNULL_END
